package cn.hdu.liang.ch02.classpath;

import java.io.File;
import java.util.Arrays;
import java.util.stream.Collectors;

/**
 * xxx.* 格式的通配符路径
 * 把路径末尾的星号去掉得到baseDir，然后遍历baseDir路径下的文件,只取以 .jar 结尾的文件
 */
public class WildcardEntry extends Entry {

    //其实就是compositeEntry的包装类
    public CompositeEntry compositeEntry = new CompositeEntry();

    public WildcardEntry(String jreLibPath) {

        String baseDir = jreLibPath.substring(0, jreLibPath.length() - 1);  //去掉最后的一个字符 *

        //列出文件
        File[] files = new File(baseDir).listFiles();

        if(files != null) {
            this.compositeEntry.compositeEntries = Arrays.stream(files)
                    .filter(file -> (file.isFile() && file.getName().endsWith(".jar")))
                    .map(file -> new ZipJarEntry(baseDir, file.getName()))
                    .collect(Collectors.toList());
        }
    }

    @Override
    public byte[] readClass(String className) {
        return compositeEntry.readClass(className);
    }

    @Override
    public String className() {
        return null;
    }
}
